home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Graphics Programming (2nd Edition) / Visual Basic Graphics Programming 2nd Edition.iso / Src / Ch1 / Pie.frm (.txt) < prev    next >
Visual Basic Form  |  1999-03-18  |  6KB  |  200 lines

  1. VERSION 5.00
  2. Begin VB.Form frmPie 
  3.    Caption         =   "Pie"
  4.    ClientHeight    =   4215
  5.    ClientLeft      =   60
  6.    ClientTop       =   345
  7.    ClientWidth     =   5160
  8.    LinkTopic       =   "Form1"
  9.    ScaleHeight     =   4215
  10.    ScaleWidth      =   5160
  11.    StartUpPosition =   3  'Windows Default
  12.    Begin VB.TextBox txtPieSliceStartAngle 
  13.       Height          =   285
  14.       Left            =   3600
  15.       TabIndex        =   2
  16.       Text            =   "0"
  17.       Top             =   120
  18.       Width           =   1455
  19.    End
  20.    Begin VB.TextBox txtPieSliceEndAngle 
  21.       Height          =   285
  22.       Left            =   3600
  23.       TabIndex        =   3
  24.       Text            =   "0.5"
  25.       Top             =   480
  26.       Width           =   1455
  27.    End
  28.    Begin VB.PictureBox picPieSlice 
  29.       Height          =   2415
  30.       Left            =   2640
  31.       ScaleHeight     =   157
  32.       ScaleMode       =   3  'Pixel
  33.       ScaleWidth      =   157
  34.       TabIndex        =   6
  35.       Top             =   1680
  36.       Width           =   2415
  37.    End
  38.    Begin VB.CommandButton cmdDraw 
  39.       Caption         =   "Draw"
  40.       Default         =   -1  'True
  41.       Height          =   495
  42.       Left            =   2040
  43.       TabIndex        =   4
  44.       Top             =   840
  45.       Width           =   1095
  46.    End
  47.    Begin VB.TextBox txtCircleEndAngle 
  48.       Height          =   285
  49.       Left            =   960
  50.       TabIndex        =   1
  51.       Text            =   "-0.5"
  52.       Top             =   480
  53.       Width           =   1455
  54.    End
  55.    Begin VB.TextBox txtCircleStartAngle 
  56.       Height          =   285
  57.       Left            =   960
  58.       TabIndex        =   0
  59.       Text            =   "-0"
  60.       Top             =   120
  61.       Width           =   1455
  62.    End
  63.    Begin VB.PictureBox picCircle 
  64.       Height          =   2415
  65.       Left            =   120
  66.       ScaleHeight     =   157
  67.       ScaleMode       =   3  'Pixel
  68.       ScaleWidth      =   157
  69.       TabIndex        =   5
  70.       Top             =   1680
  71.       Width           =   2415
  72.    End
  73.    Begin VB.Label Label1 
  74.       Caption         =   "Start Angle"
  75.       Height          =   255
  76.       Index           =   5
  77.       Left            =   2760
  78.       TabIndex        =   12
  79.       Top             =   120
  80.       Width           =   855
  81.    End
  82.    Begin VB.Label Label1 
  83.       Caption         =   "End Angle"
  84.       Height          =   255
  85.       Index           =   4
  86.       Left            =   2760
  87.       TabIndex        =   11
  88.       Top             =   480
  89.       Width           =   855
  90.    End
  91.    Begin VB.Label Label1 
  92.       Alignment       =   2  'Center
  93.       Caption         =   "PieSlice Subroutine"
  94.       Height          =   255
  95.       Index           =   3
  96.       Left            =   2640
  97.       TabIndex        =   10
  98.       Top             =   1440
  99.       Width           =   2415
  100.    End
  101.    Begin VB.Label Label1 
  102.       Alignment       =   2  'Center
  103.       Caption         =   "Circle Method"
  104.       Height          =   255
  105.       Index           =   2
  106.       Left            =   120
  107.       TabIndex        =   9
  108.       Top             =   1440
  109.       Width           =   2415
  110.    End
  111.    Begin VB.Label Label1 
  112.       Caption         =   "End Angle"
  113.       Height          =   255
  114.       Index           =   1
  115.       Left            =   120
  116.       TabIndex        =   8
  117.       Top             =   480
  118.       Width           =   855
  119.    End
  120.    Begin VB.Label Label1 
  121.       Caption         =   "Start Angle"
  122.       Height          =   255
  123.       Index           =   0
  124.       Left            =   120
  125.       TabIndex        =   7
  126.       Top             =   120
  127.       Width           =   855
  128.    End
  129. Attribute VB_Name = "frmPie"
  130. Attribute VB_GlobalNameSpace = False
  131. Attribute VB_Creatable = False
  132. Attribute VB_PredeclaredId = True
  133. Attribute VB_Exposed = False
  134. Option Explicit
  135. Const PI = 3.14159265
  136. ' Draw a pie slice.
  137. Public Sub PieSlice(ByVal obj As Object, ByVal X As Single, ByVal Y As Single, ByVal radius As Single, ByVal start_angle As Single, ByVal end_angle As Single)
  138.     ' Make both angles <= 2 * PI.
  139.     Do While start_angle > 2 * PI
  140.         start_angle = start_angle - 2 * PI
  141.     Loop
  142.     Do While end_angle > 2 * PI
  143.         end_angle = end_angle - 2 * PI
  144.     Loop
  145.     ' Make both angles strictly positive.
  146.     Do While start_angle <= 0
  147.         start_angle = start_angle + 2 * PI
  148.     Loop
  149.     Do While end_angle <= 0
  150.         end_angle = end_angle + 2 * PI
  151.     Loop
  152.     ' Draw the slice
  153.     obj.Circle (X, Y), radius, obj.ForeColor, -start_angle, -end_angle
  154. End Sub
  155. Private Sub cmdDraw_Click()
  156. Dim X As Single
  157. Dim radius As Single
  158. Dim start_angle As Single
  159. Dim end_angle As Single
  160.     ' Clear the PictureBoxes.
  161.     picCircle.Cls
  162.     picPieSlice.Cls
  163.     ' Get the pie slice geometry parameters.
  164.     X = picCircle.ScaleWidth / 2
  165.     radius = picCircle.ScaleWidth * 0.45
  166.     ' Draw using Circle.
  167.     start_angle = CSng(txtCircleStartAngle.Text)
  168.     If start_angle < -2 * PI Then
  169.         start_angle = -2 * PI
  170.         txtCircleStartAngle.Text = Format$(start_angle)
  171.     ElseIf start_angle > 2 * PI Then
  172.         start_angle = 2 * PI
  173.         txtCircleStartAngle.Text = Format$(start_angle)
  174.     End If
  175.     end_angle = CSng(txtCircleEndAngle.Text)
  176.     If end_angle < -2 * PI Then
  177.         end_angle = -2 * PI
  178.         txtCircleEndAngle.Text = Format$(end_angle)
  179.     ElseIf end_angle > 2 * PI Then
  180.         end_angle = 2 * PI
  181.         txtCircleEndAngle.Text = Format$(end_angle)
  182.     End If
  183.     picCircle.Circle (X, X), radius, , _
  184.         start_angle, end_angle
  185.     ' Draw using PieSlice.
  186.     start_angle = CSng(txtPieSliceStartAngle.Text)
  187.     end_angle = CSng(txtPieSliceEndAngle.Text)
  188.     PieSlice picPieSlice, X, X, radius, _
  189.         start_angle, end_angle
  190. End Sub
  191. ' Initialize the drawing PictureBox.
  192. Private Sub Form_Load()
  193.     picPieSlice.AutoRedraw = True
  194.     picPieSlice.FillColor = vbWhite
  195.     picPieSlice.FillStyle = vbFSSolid
  196.     picCircle.AutoRedraw = True
  197.     picCircle.FillColor = vbWhite
  198.     picCircle.FillStyle = vbFSSolid
  199. End Sub
  200.